package com.by.yz.loginUtil;

import android.util.Log;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
import com.by.yz.App;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.net.CookieStore;
import java.net.HttpCookie;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by 你只能呵呵 on 2017/4/10.
 */

public class DiagnosisRESTFul {
    public interface MyGetCallBack{
        public void ok(JSONArray response) throws JSONException;
        public void error(String error);
    }
    public interface  MyPostCallBack{
        public void ok(JSONObject response) throws JSONException;
        public void error(String error);
    }

    public void AllBingMing(final MyGetCallBack cb) {

        String url = Constants.server_url + "/api/bing-mings";
        JsonArrayRequest getRequest = new JsonArrayRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        try {
                            cb.ok(response);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                        cb.error(error.toString());
                    }
                }
        ) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<String, String>();
                CookieStore cookieJar = App.cookieManager.getCookieStore();
                List<HttpCookie> cookies = cookieJar.getCookies();
                for (HttpCookie cookie : cookies) {
                    if (cookie.toString().contains("XSRF-TOKEN")) {
                        Log.e("token-post", cookie.getValue());
                        headers.put("X-XSRF-TOKEN", cookie.getValue());
                    }
                }
                return headers;
            }
        };

        App.requestQueue.add(getRequest);
    }

    public void bmDocterlist(String bmName,final MyGetCallBack cb) {

        String url = Constants.server_url + "/api/rule-repositories-docterlist/" +bmName;
        JsonArrayRequest getRequest = new JsonArrayRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        try {
                            cb.ok(response);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                        cb.error(error.toString());
                    }
                }
        ) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<String, String>();
                CookieStore cookieJar = App.cookieManager.getCookieStore();
                List<HttpCookie> cookies = cookieJar.getCookies();
                for (HttpCookie cookie : cookies) {
                    if (cookie.toString().contains("XSRF-TOKEN")) {
                        Log.e("token-post", cookie.getValue());
                        headers.put("X-XSRF-TOKEN", cookie.getValue());
                    }
                }
                return headers;
            }
        };

        App.requestQueue.add(getRequest);
    }

    public void getZhengXiangMing(String bmName,final MyGetCallBack cb) {
        String url = Constants.server_url + "/api/zheng-xings-mings-byBM/"+bmName;
        JsonArrayRequest getRequest = new JsonArrayRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        try {
                            cb.ok(response);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                        cb.error(error.toString());
                    }
                }
        ) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<String, String>();
                CookieStore cookieJar = App.cookieManager.getCookieStore();
                List<HttpCookie> cookies = cookieJar.getCookies();
                for (HttpCookie cookie : cookies) {
                    if (cookie.toString().contains("XSRF-TOKEN")) {
                        Log.e("token-post", cookie.getValue());
                        headers.put("X-XSRF-TOKEN", cookie.getValue());
                    }
                }
                return headers;
            }
        };

        App.requestQueue.add(getRequest);
    }

    public void jtZhengXiangMing(String zxmName,String bmName,final MyGetCallBack cb) {
        String url = Constants.server_url + "/api/j-t-zheng-xiangs-byZXM/"+zxmName+"/"+bmName;
        JsonArrayRequest getRequest = new JsonArrayRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        try {
                            cb.ok(response);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                        cb.error(error.toString());
                    }
                }
        ) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<String, String>();
                CookieStore cookieJar = App.cookieManager.getCookieStore();
                List<HttpCookie> cookies = cookieJar.getCookies();
                for (HttpCookie cookie : cookies) {
                    if (cookie.toString().contains("XSRF-TOKEN")) {
                        Log.e("token-post", cookie.getValue());
                        headers.put("X-XSRF-TOKEN", cookie.getValue());
                    }
                }
                return headers;
            }
        };

        App.requestQueue.add(getRequest);
    }

    public void FindZhengXing(JSONArray data,String doctorName,String bmName,final MyGetCallBack cb) {

        String url = Constants.server_url + "/api/zheng-xings-match/"+doctorName+"/"+bmName;
        Log.e("url = ",url);
        JsonArrayRequest getRequest = new JsonArrayRequest(Request.Method.POST, url, data,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        try {
                            cb.ok(response);
                        } catch (JSONException e) {
                            Log.e("JSONException",e.toString());
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                        cb.error(error.toString());
                        Log.e("DiagnosisRESTFul.error",error.toString());
                    }
                }
        ) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<String, String>();
                CookieStore cookieJar = App.cookieManager.getCookieStore();
                List<HttpCookie> cookies = cookieJar.getCookies();
                for (HttpCookie cookie : cookies) {
                    if (cookie.toString().contains("XSRF-TOKEN")) {
                        Log.e("token-post", cookie.getValue());
                        headers.put("X-XSRF-TOKEN", cookie.getValue());
                    }
                }
                return headers;
            }
        };

        App.requestQueue.add(getRequest);
    }

    public void getChufang(String zhengxing,String bingMing,final MyPostCallBack cb) {

        String url = Constants.server_url + "/api/chu-fangs-zx/"+zhengxing+"/"+bingMing;
        JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            cb.ok(response);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                        cb.error(error.toString());
                    }
                }
        ) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<String, String>();
                CookieStore cookieJar = App.cookieManager.getCookieStore();
                List<HttpCookie> cookies = cookieJar.getCookies();
                for (HttpCookie cookie : cookies) {
                    if (cookie.toString().contains("XSRF-TOKEN")) {
                        Log.e("token-post", cookie.getValue());
                        headers.put("X-XSRF-TOKEN", cookie.getValue());
                    }
                }
                return headers;
            }
        };

        App.requestQueue.add(getRequest);
    }
}
